package com.hlw.hr_man.dao;

import java.util.List;

import com.hlw.hr_man.Model.Absent;
import com.hlw.hr_man.Model.Overtime;
import com.hlw.hr_man.Model.SalaryModel;

public interface SalaryDao {
	
	/**
	 * 得到工资记录总数
	 * @return
	 */
	public int getAllCout();
	
	/**
	 * 得到所有的员工的工资配置
	 * @param start
	 * @param pageSize
	 * @return
	 */
	public List<SalaryModel> getAllSalary(int start,int pageSize);
	
	/**
	 * 添加员工工资配置
	 * @return -1为找不到输入的员工
	 * 			0为该员工的该月的工资配置已经存在
	 * 			1为添加成功
	 */
	public int addSalary(SalaryModel sal);
	
	/**
	 * 修改员工工资配置
	 * @param sal 
	 * @return  0为失败
	 */
	public int updateSalary(SalaryModel sal);
	
	/**
	 * 所有工资信息总数
	 * @return
	 */
	public int findSalaryAllCount();
	
	/**
	 * 所有工资信息
	 * @return
	 */
	public List<SalaryModel> findAllSalary(int start,int pageSize);
	
	/**
	 * 按月查找的总数
	 * @param date
	 * @return
	 */
	public int findSalaryCountByDate(String date);
	
	/**
	 * 通过月份查询工资配置
	 * @param date
	 * @param start
	 * @param pageSize
	 * @return
	 */
	public List<SalaryModel> findSalaryByDate(String date ,int start,int pageSize);
	
	/**
	 * 通过月份和搜索值找到总数
	 * @param date
	 * @param value
	 * @return
	 */
	public int findSalaryCountByDateAndValue(String date,String value);
	
	/**
	 * 通过搜索的值和月份查询
	 * @param value
	 * @param start
	 * @param pageSize
	 * @return
	 */
	public List<SalaryModel> findSalaryByValue(String date,String value,int start,int pageSize);
	
	/**
	 * 通过部门名称找到工资条数总数
	 * @param deptname
	 * @return
	 */
	public int findSalaryCountByDeptName(String deptname);
	
	/**
	 * 通过部门名称查找工资
	 * @param deptname
	 * @param start
	 * @param pageSize
	 * @return
	 */
	public List<SalaryModel> findSalaryByDeptName(String deptname,int start,int pageSize);
	
	/**
	 * 通过员工id和日期得到这个月该员工缺勤总次数
	 * @param e_id
	 * @param sal_date
	 * @return
	 */
	public int getSalaryAbsentCountByNoAndDate(int e_id,String sal_date);
	
	/**
	 * 通过员工id和日期得到这个月该员工缺勤详情
	 * @param e_id
	 * @param sal_date
	 * @param start
	 * @param pageSize
	 * @return
	 */
	public List<Absent> getSalaryAbsentByNoAndDate(int e_id,String sal_date,int start,int pageSize);
	
	/**
	 * 通过员工id和日期得到这个月该员工加班总次数
	 * @param e_id
	 * @param sal_date
	 * @return
	 */
	public int getSalaryOverTimeCountByNoAndDate(int e_id,String sal_date);
	
	/**
	 * 通过员工id和日期得到这个月该员工加班详情
	 * @param e_id
	 * @param sal_date
	 * @param start
	 * @param pageSize
	 * @return
	 */
	public List<Overtime> getSalaryOverTimeByNoAndDate(int e_id,String sal_date,int start,int pageSize);
	
}
